5
תגובות

בעיה עם PHP ו-XML

פתח yardsod ,
יש לי קובץ XML:
<?xml version="1.0" encoding="utf-8"?>
<lang>
  <settings>
    <dir>ltr</dir>
  </settings>
</lang>

ובניתי פונקציה שמחזירה את ערך התג:
public function getText($get){
    $XMLFile = "assets/languages/".$this->currentLang."/site.xml";
    $lang = new simpleXMLElement($XMLFile,null,true);
    return $lang->$get;
  }

הבעיה היא שהפונקציה לא מחזירה כלום:
$htmlSeo->getText("settings->dir")

לא מחזיר כלום...
יש רעיונות?

5 תשובות

avatar ענה zacharya ב 18 לינואר 2014 #

לפי ההבנה שלי זה צריך להיות:

$htmlSeo->getText("settings[0]->dir")

avatar ענה OrelBeY ב 18 לינואר 2014 #

@zacharya נראה לי שאתה צודק. בכל מקרה, הסיפור שונה. כשאתה כותב $lang->$get, המשתנה $get חייב להיות שם של מאפיין של המחלקה ב-$lang. אתה לא יכול להיכנס לזה עוד פנימה רקורסיבית. כתבתי דוגמת קוד להמחיש את זה.

avatar ענה yardsod ב 19 לינואר 2014 #

@zacharya כבר ניסיתי מקודם וזה לא עזר...

avatar ענה OrelBeY ב 19 לינואר 2014 #

@yardsod מה לגבי מה שאני כתבתי?

avatar ענה yardsod ב 19 לינואר 2014 #

@OrelBeY תודה רבה, הבנתי.
כבר חשבתי על משהו אחר שעובד:

class language{
  public $currentLang = "en_US";
  public function getSettingText($get){
    $XMLFile = "assets/languages/".$this->currentLang."/site.xml";
    $lang = new simpleXMLElement($XMLFile,null,true);
    return $lang->settings->$get;
  }
  public function getStringText($get){
    $XMLFile = "assets/languages/".$this->currentLang."/site.xml";
    $lang = new simpleXMLElement($XMLFile,null,true);
    return $lang->strings->$get;
  }
}
$lngString = new language();
echo $lngString->getSettingText("dir");
echo $lngString->getStringText("Hello");

מסתבר שאם אני שם רק מאפיין אחד זה עובד...